import type {SvgProps} from 'react-native-svg';
import AddReaction from '@assets/images/add-reaction.svg';
import All from '@assets/images/all.svg';
import Android from '@assets/images/android.svg';
import Apple from '@assets/images/apple.svg';
import ArrowCircleClockwise from '@assets/images/arrow-circle-clockwise.svg';
import ArrowCollapse from '@assets/images/arrow-collapse.svg';
import ArrowDownLong from '@assets/images/arrow-down-long.svg';
import ArrowRightLong from '@assets/images/arrow-right-long.svg';
import ArrowRight from '@assets/images/arrow-right.svg';
import ArrowSplit from '@assets/images/arrow-split.svg';
import ArrowUpLong from '@assets/images/arrow-up-long.svg';
import UpArrow from '@assets/images/arrow-up.svg';
import ArrowsLeftRight from '@assets/images/arrows-leftright.svg';
import AttachmentNotFound from '@assets/images/attachment-not-found.svg';
import ConciergeAvatar from '@assets/images/avatars/concierge-avatar.svg';
import FallbackAvatar from '@assets/images/avatars/fallback-avatar.svg';
import FallbackWorkspaceAvatar from '@assets/images/avatars/fallback-workspace-avatar.svg';
import NotificationsAvatar from '@assets/images/avatars/notifications-avatar.svg';
import ActiveRoomAvatar from '@assets/images/avatars/room.svg';
import BackArrow from '@assets/images/back-left.svg';
import Bank from '@assets/images/bank.svg';
import Bed from '@assets/images/bed.svg';
import Bell from '@assets/images/bell.svg';
import Bill from '@assets/images/bill.svg';
import Binoculars from '@assets/images/binoculars.svg';
import boltSlash from '@assets/images/bolt-slash.svg';
import Bolt from '@assets/images/bolt.svg';
import Bookmark from '@assets/images/bookmark.svg';
import Box from '@assets/images/box.svg';
import Bug from '@assets/images/bug.svg';
import Building from '@assets/images/building.svg';
import Buildings from '@assets/images/buildings.svg';
import CalendarSolid from '@assets/images/calendar-solid.svg';
import Calendar from '@assets/images/calendar.svg';
import Camera from '@assets/images/camera.svg';
import CarWithKey from '@assets/images/car-with-key.svg';
import Car from '@assets/images/car.svg';
import CaretUpDown from '@assets/images/caret-up-down.svg';
import Cash from '@assets/images/cash.svg';
import ChatBubbleCounter from '@assets/images/chatbubble-counter.svg';
import ChatBubbleReply from '@assets/images/chatbubble-reply.svg';
import ChatBubbleUnread from '@assets/images/chatbubble-unread.svg';
import ChatBubble from '@assets/images/chatbubble.svg';
import ChatBubbles from '@assets/images/chatbubbles.svg';
import CheckCircle from '@assets/images/check-circle.svg';
import CheckSquare from '@assets/images/check-square.svg';
import Checkbox from '@assets/images/checkbox.svg';
import CheckmarkCircle from '@assets/images/checkmark-circle.svg';
import Checkmark from '@assets/images/checkmark.svg';
import CircularArrowBackwards from '@assets/images/circular-arrow-backwards.svg';
import Clock from '@assets/images/clock.svg';
import Close from '@assets/images/close.svg';
import ClosedSign from '@assets/images/closed-sign.svg';
import Coins from '@assets/images/coins.svg';
import Collapse from '@assets/images/collapse.svg';
import CommentBubbles from '@assets/images/comment-bubbles.svg';
import Concierge from '@assets/images/concierge.svg';
import Connect from '@assets/images/connect.svg';
import ConnectionComplete from '@assets/images/connection-complete.svg';
import Copy from '@assets/images/copy.svg';
import CreditCardExclamation from '@assets/images/credit-card-exclamation.svg';
import CreditCardHourglass from '@assets/images/credit-card-hourglass.svg';
import CreditCard from '@assets/images/creditcard.svg';
import Crosshair from '@assets/images/crosshair.svg';
import DocumentMerge from '@assets/images/document-merge.svg';
import Document from '@assets/images/document.svg';
import DotIndicatorUnfilled from '@assets/images/dot-indicator-unfilled.svg';
import DotIndicator from '@assets/images/dot-indicator.svg';
import DownArrow from '@assets/images/down.svg';
import Download from '@assets/images/download.svg';
import DragAndDrop from '@assets/images/drag-and-drop.svg';
import DragHandles from '@assets/images/drag-handles.svg';
import Emoji from '@assets/images/emoji.svg';
import Lightbulb from '@assets/images/emojiCategoryIcons/light-bulb.svg';
import EmptyStateRoutePending from '@assets/images/emptystate__routepending.svg';
import EmptyStateSpyPigeon from '@assets/images/emptystate__spy-pigeon.svg';
import EReceiptIcon from '@assets/images/eReceiptIcon.svg';
import Exclamation from '@assets/images/exclamation.svg';
import Exit from '@assets/images/exit.svg';
import Expand from '@assets/images/expand.svg';
import ExpensifyAppIcon from '@assets/images/expensify-app-icon.svg';
import ExpensifyCard from '@assets/images/expensify-card-icon.svg';
import ExpensifyFooterLogoVertical from '@assets/images/expensify-footer-logo-vertical.svg';
import ExpensifyFooterLogo from '@assets/images/expensify-footer-logo.svg';
import ExpensifyLogoNew from '@assets/images/expensify-logo-new.svg';
import ExpensifyWordmark from '@assets/images/expensify-wordmark.svg';
import Export from '@assets/images/export.svg';
import EyeDisabled from '@assets/images/eye-disabled.svg';
import Eye from '@assets/images/eye.svg';
import Feed from '@assets/images/feed.svg';
import Filter from '@assets/images/filter.svg';
import Filters from '@assets/images/filters.svg';
import Flag from '@assets/images/flag.svg';
import FlagLevelOne from '@assets/images/flag_level_01.svg';
import FlagLevelTwo from '@assets/images/flag_level_02.svg';
import FlagLevelThree from '@assets/images/flag_level_03.svg';
import Folder from '@assets/images/folder.svg';
import Fullscreen from '@assets/images/fullscreen.svg';
import GalleryNotFound from '@assets/images/gallery-not-found.svg';
import Gallery from '@assets/images/gallery.svg';
import Gear from '@assets/images/gear.svg';
import Globe from '@assets/images/globe.svg';
import Hashtag from '@assets/images/hashtag.svg';
import Heart from '@assets/images/heart.svg';
import History from '@assets/images/history.svg';
import Home from '@assets/images/home.svg';
import Hourglass from '@assets/images/hourglass.svg';
import ImageCropCircleMask from '@assets/images/image-crop-circle-mask.svg';
import ImageCropSquareMask from '@assets/images/image-crop-square-mask.svg';
import Inbox from '@assets/images/inbox.svg';
import Info from '@assets/images/info.svg';
import CircleSlash from '@assets/images/integrationicons/circle-slash.svg';
import NetSuiteExport from '@assets/images/integrationicons/export/netsuite-icon.svg';
import QBOExport from '@assets/images/integrationicons/export/qbo-icon.svg';
import SageIntacctExport from '@assets/images/integrationicons/export/sage-intacct-icon.svg';
import XeroExport from '@assets/images/integrationicons/export/xero-icon.svg';
import MicrosoftDynamicsSquare from '@assets/images/integrationicons/microsoft-dynamics-icon-square.svg';
import NetSuiteSquare from '@assets/images/integrationicons/netsuite-icon-square.svg';
import OracleSquare from '@assets/images/integrationicons/oracle-icon-square.svg';
import QBDSquare from '@assets/images/integrationicons/qbd-icon-square.svg';
import QBOCircle from '@assets/images/integrationicons/qbo-icon-circle.svg';
import QBOSquare from '@assets/images/integrationicons/qbo-icon-square.svg';
import SageIntacctSquare from '@assets/images/integrationicons/sage-intacct-icon-square.svg';
import SapSquare from '@assets/images/integrationicons/sap-icon-square.svg';
import Uber from '@assets/images/integrationicons/uber.svg';
import XeroCircle from '@assets/images/integrationicons/xero-icon-circle.svg';
import XeroSquare from '@assets/images/integrationicons/xero-icon-square.svg';
import InvoiceGeneric from '@assets/images/invoice-generic.svg';
import Invoice from '@assets/images/invoice.svg';
import Key from '@assets/images/key.svg';
import Keyboard from '@assets/images/keyboard.svg';
import LinkCopy from '@assets/images/link-copy.svg';
import Link from '@assets/images/link.svg';
import Location from '@assets/images/location.svg';
import Lock from '@assets/images/lock.svg';
import Luggage from '@assets/images/luggage.svg';
import MagnifyingGlassSpyMouthClosed from '@assets/images/magnifying-glass-spy-mouth-closed.svg';
import MagnifyingGlass from '@assets/images/magnifying-glass.svg';
import Mail from '@assets/images/mail.svg';
import MakeAdmin from '@assets/images/make-admin.svg';
import Map from '@assets/images/map.svg';
import Megaphone from '@assets/images/megaphone.svg';
import Menu from '@assets/images/menu.svg';
import Meter from '@assets/images/meter.svg';
import Minus from '@assets/images/minus.svg';
import MoneyBag from '@assets/images/money-bag.svg';
import MoneyCircle from '@assets/images/money-circle.svg';
import MoneyHourglass from '@assets/images/money-hourglass.svg';
import MoneySearch from '@assets/images/money-search.svg';
import MoneyWaving from '@assets/images/money-waving.svg';
import Monitor from '@assets/images/monitor.svg';
import MultiTag from '@assets/images/multi-tag.svg';
import Mute from '@assets/images/mute.svg';
import NewWindow from '@assets/images/new-window.svg';
import NewWorkspace from '@assets/images/new-workspace.svg';
import OfflineCloud from '@assets/images/offline-cloud.svg';
import Offline from '@assets/images/offline.svg';
import Paperclip from '@assets/images/paperclip.svg';
import Pause from '@assets/images/pause.svg';
import Pencil from '@assets/images/pencil.svg';
import Phone from '@assets/images/phone.svg';
import Pin from '@assets/images/pin.svg';
import Plane from '@assets/images/plane.svg';
import Play from '@assets/images/play.svg';
import Plus from '@assets/images/plus.svg';
import Printer from '@assets/images/printer.svg';
import Profile from '@assets/images/profile.svg';
import QrCode from '@assets/images/qrcode.svg';
import QuestionMark from '@assets/images/question-mark-circle.svg';
import ReceiptBody from '@assets/images/receipt-body.svg';
import ReceiptMultiple from '@assets/images/receipt-multiple.svg';
import ReceiptPlaceholderPlus from '@assets/images/receipt-placeholder-plus.svg';
import ReceiptPlus from '@assets/images/receipt-plus.svg';
import ReceiptScan from '@assets/images/receipt-scan.svg';
import ReceiptSlash from '@assets/images/receipt-slash.svg';
import Receipt from '@assets/images/receipt.svg';
import RemoveMembers from '@assets/images/remove-members.svg';
import Rotate from '@assets/images/rotate-image.svg';
import RotateLeft from '@assets/images/rotate-left.svg';
import Scan from '@assets/images/scan.svg';
import Send from '@assets/images/send.svg';
import Shield from '@assets/images/shield.svg';
import AppleLogo from '@assets/images/signIn/apple-logo.svg';
import GoogleLogo from '@assets/images/signIn/google-logo.svg';
import AdvancedApprovalsSquare from '@assets/images/simple-illustrations/advanced-approvals-icon-square.svg';
import MessageInABottle from '@assets/images/simple-illustrations/simple-illustration__messageinabottle.svg';
import ReplaceReceipt from '@assets/images/simple-illustrations/simple-illustration__replace-receipt.svg';
import SmartScan from '@assets/images/simple-illustrations/simple-illustration__smartscan.svg';
import Facebook from '@assets/images/social-facebook.svg';
import Instagram from '@assets/images/social-instagram.svg';
import Linkedin from '@assets/images/social-linkedin.svg';
import Podcast from '@assets/images/social-podcast.svg';
import Twitter from '@assets/images/social-twitter.svg';
import Youtube from '@assets/images/social-youtube.svg';
import SpreadsheetComputer from '@assets/images/spreadsheet-computer.svg';
import Star from '@assets/images/Star.svg';
import Stopwatch from '@assets/images/stopwatch.svg';
import Suitcase from '@assets/images/suitcase.svg';
import Sync from '@assets/images/sync.svg';
import Table from '@assets/images/table.svg';
import Tag from '@assets/images/tag.svg';
import Task from '@assets/images/task.svg';
import Thread from '@assets/images/thread.svg';
import ThreeDots from '@assets/images/three-dots.svg';
import ThumbsDown from '@assets/images/thumbs-down.svg';
import ThumbsUp from '@assets/images/thumbs-up.svg';
import Train from '@assets/images/train.svg';
import Transfer from '@assets/images/transfer.svg';
import Trashcan from '@assets/images/trashcan.svg';
import TreasureChest from '@assets/images/treasure-chest.svg';
import Unlock from '@assets/images/unlock.svg';
import UploadAlt from '@assets/images/upload-alt.svg';
import Upload from '@assets/images/upload.svg';
import UserCheck from '@assets/images/user-check.svg';
import UserEye from '@assets/images/user-eye.svg';
import UserLock from '@assets/images/user-lock.svg';
import UserPlus from '@assets/images/user-plus.svg';
import User from '@assets/images/user.svg';
import Users from '@assets/images/users.svg';
import VideoSlash from '@assets/images/video-slash.svg';
import VolumeHigh from '@assets/images/volume-high.svg';
import VolumeLow from '@assets/images/volume-low.svg';
import Wallet from '@assets/images/wallet.svg';
import Workflows from '@assets/images/workflows.svg';
import Workspace from '@assets/images/workspace-default-avatar.svg';
import Clear from '@assets/images/x-circle.svg';
import Zoom from '@assets/images/zoom.svg';

const Expensicons = {
    ReceiptBody,
    ActiveRoomAvatar,
    AddReaction,
    All,
    Android,
    Apple,
    AppleLogo,
    ArrowSplit,
    ArrowCollapse,
    ArrowRight,
    ArrowRightLong,
    ArrowsLeftRight,
    ArrowUpLong,
    ArrowDownLong,
    AttachmentNotFound,
    BackArrow,
    Bank,
    CircularArrowBackwards,
    Bill,
    Bell,
    Binoculars,
    Bolt,
    Box,
    Bug,
    Building,
    Buildings,
    Calendar,
    Camera,
    Car,
    Cash,
    ChatBubble,
    ChatBubbles,
    Checkbox,
    Checkmark,
    Close,
    Clock,
    ClosedSign,
    Collapse,
    CommentBubbles,
    Concierge,
    ConciergeAvatar,
    Connect,
    Crosshair,
    ConnectionComplete,
    Copy,
    CreditCard,
    CreditCardHourglass,
    CreditCardExclamation,
    CircleSlash,
    Document,
    DocumentMerge,
    DotIndicator,
    DotIndicatorUnfilled,
    DownArrow,
    Download,
    DragAndDrop,
    DragHandles,
    EReceiptIcon,
    Emoji,
    EmptyStateRoutePending,
    Exclamation,
    Exit,
    ExpensifyAppIcon,
    ExpensifyCard,
    ExpensifyWordmark,
    ExpensifyFooterLogo,
    ExpensifyFooterLogoVertical,
    Expand,
    Export,
    Eye,
    EyeDisabled,
    FallbackAvatar,
    FallbackWorkspaceAvatar,
    Flag,
    FlagLevelOne,
    FlagLevelTwo,
    FlagLevelThree,
    Fullscreen,
    Folder,
    Tag,
    MultiTag,
    Coins,
    Thread,
    Gallery,
    Gear,
    Globe,
    GoogleLogo,
    Hashtag,
    Heart,
    History,
    Home,
    Hourglass,
    Inbox,
    ImageCropCircleMask,
    ImageCropSquareMask,
    Info,
    Invoice,
    InvoiceGeneric,
    Key,
    Keyboard,
    Link,
    LinkCopy,
    Location,
    Lock,
    Luggage,
    MagnifyingGlass,
    Mail,
    MakeAdmin,
    Map,
    Menu,
    Meter,
    Megaphone,
    MessageInABottle,
    MoneyBag,
    MoneyCircle,
    MoneySearch,
    MoneyWaving,
    MoneyHourglass,
    Monitor,
    Mute,
    ExpensifyLogoNew,
    NewWindow,
    NewWorkspace,
    NotificationsAvatar,
    Offline,
    OfflineCloud,
    Paperclip,
    Pause,
    Pencil,
    Phone,
    Pin,
    Play,
    Plus,
    Printer,
    Profile,
    QBOSquare,
    QrCode,
    QuestionMark,
    TreasureChest,
    Receipt,
    ReceiptPlaceholderPlus,
    ReceiptPlus,
    ReceiptScan,
    ReceiptSlash,
    RemoveMembers,
    ReplaceReceipt,
    ReceiptMultiple,
    Rotate,
    RotateLeft,
    Scan,
    Send,
    Shield,
    SmartScan,
    Stopwatch,
    Suitcase,
    Sync,
    Task,
    ThumbsUp,
    ThreeDots,
    Transfer,
    Trashcan,
    Uber,
    Unlock,
    UpArrow,
    Upload,
    UploadAlt,
    User,
    UserCheck,
    Users,
    VideoSlash,
    VolumeHigh,
    VolumeLow,
    Wallet,
    Workflows,
    Workspace,
    XeroSquare,
    IntacctSquare: SageIntacctSquare,
    AdvancedApprovalsSquare,
    Zoom,
    Twitter,
    Youtube,
    Facebook,
    Podcast,
    Linkedin,
    Instagram,
    ChatBubbleUnread,
    ChatBubbleReply,
    ChatBubbleCounter,
    Lightbulb,
    Plane,
    Bed,
    CarWithKey,
    Clear,
    CheckCircle,
    CheckmarkCircle,
    NetSuiteSquare,
    XeroCircle,
    QBOCircle,
    MicrosoftDynamicsSquare,
    OracleSquare,
    SapSquare,
    Filters,
    CalendarSolid,
    Filter,
    UserEye,
    CaretUpDown,
    UserPlus,
    Feed,
    Table,
    SpreadsheetComputer,
    Bookmark,
    Star,
    QBDSquare,
    GalleryNotFound,
    Train,
    boltSlash,
    MagnifyingGlassSpyMouthClosed,
    CheckSquare,
    Minus,
    ThumbsDown,
    UserLock,
    EmptyStateSpyPigeon,
    NetSuiteExport,
    QBOExport,
    SageIntacctExport,
    XeroExport,
    ArrowCircleClockwise,
};

// Create the ExpensifyIcons object from the imported Expensicons
const ExpensifyIcons = Expensicons;

/**
 * Get an ExpensifyIcon by name
 * @param iconName - The name of the icon to retrieve
 * @returns The icon component or undefined if not found
 */
function getExpensifyIcon(iconName: ExpensifyIconName): React.FC<SvgProps> {
    return ExpensifyIcons[iconName];
}

/**
 * Get all available ExpensifyIcon names
 * @returns Array of available icon names
 */
const AVAILABLE_EXPENSIFY_ICONS = Object.keys(ExpensifyIcons);

/**
 * Type representing all available ExpensifyIcon names
 */
type ExpensifyIconName = keyof typeof ExpensifyIcons;

export default ExpensifyIcons;
export {getExpensifyIcon, AVAILABLE_EXPENSIFY_ICONS};
export type {ExpensifyIconName};
